package com.allen.study.application.api.assembler;

import com.allen.study.application.api.assembler.mapper.IEmployeeLoginDTOStructMapper;
import com.allen.study.application.api.request.EmployeeLoginCreateRequest;
import com.allen.study.application.api.request.EmployeeLoginQueryRequest;
import com.allen.study.application.api.request.EmployeeLoginUpdateRequest;
import com.allen.study.application.api.response.EmployeeLoginQueryResponse;
import com.allen.study.application.api.response.EmployeeLoginResponse;
import com.allen.study.domain.entity.EmployeeLogin;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 * 用户登录信息表类型转换器
 *
 * @author AllenSun
 * @since 2025-03-15 21:29
 */
@Component
public class EmployeeLoginDTOAssembler {

    /**
     * 用户登录信息表创建请求数据传输对象 转 用户登录信息表实体
     *
     * @param createRequest 用户登录信息表创建请求数据传输对象
     * @return 用户登录信息表实体
     */
    public EmployeeLogin assembler(EmployeeLoginCreateRequest createRequest) {
        //领域模型 自行实现 entity组装工厂类 (domian层提供)
        return IEmployeeLoginDTOStructMapper.INSTANCE.fromCreateRequest(createRequest);
    }

    /**
     * 用户登录信息表更新请求数据传输对象 转 用户登录信息表实体
     *
     * @param updateRequest 用户登录信息表更新请求数据传输对象
     * @return 用户登录信息表实体
     */
    public EmployeeLogin assembler(EmployeeLoginUpdateRequest updateRequest) {
        //领域模型 自行实现 entity组装工厂类 (domian层提供)
        return IEmployeeLoginDTOStructMapper.INSTANCE.fromUpdateRequest(updateRequest);
    }

    /**
     * 用户登录信息表查询请求数据传输对象 转 用户登录信息表实体
     *
     * @param queryRequest 用户登录信息表查询请求数据传输对象
     * @return 用户登录信息表实体
     */
    public EmployeeLogin assembler(EmployeeLoginQueryRequest queryRequest) {
        //领域模型 自行实现 entity组装工厂类 (domian层提供)
        return IEmployeeLoginDTOStructMapper.INSTANCE.fromQueryRequest(queryRequest);
    }

    /**
     * 用户登录信息表实体 转 用户登录信息表响应数据传输对象
     *
     * @param employeeLogin 用户登录信息表实体
     * @return 用户登录信息表响应数据传输对象
     */
    public EmployeeLoginResponse toResponse(EmployeeLogin employeeLogin) {
        return IEmployeeLoginDTOStructMapper.INSTANCE.toResponse(employeeLogin);
    }

    /**
     * 用户登录信息表实体 转 用户登录信息表查询响应数据传输对象
     *
     * @param employeeLogin 用户登录信息表实体
     * @return 用户登录信息表查询响应数据传输对象
     */
    public EmployeeLoginQueryResponse toQueryResponse(EmployeeLogin employeeLogin) {
        return IEmployeeLoginDTOStructMapper.INSTANCE.toQueryResponse(employeeLogin);
    }

    /**
     * 用户登录信息表实体列表 转 用户登录信息表查询响应数据传输对象列表
     *
     * @param employeeLoginList 用户登录信息表实体列表
     * @return 用户登录信息表查询响应数据传输对象列表
     */
    public List<EmployeeLoginQueryResponse> toQueryResponse(List<EmployeeLogin> employeeLoginList) {
        return IEmployeeLoginDTOStructMapper.INSTANCE.toQueryResponse(employeeLoginList);
    }
}
